package cn.vehicle.mapper;

import cn.vehicle.domains.bo.QueryRoleBo;
import cn.vehicle.domains.entity.SysRoleEntity;
import java.util.List;

/**
 * 系统角色Mapper接口
 * 对应sys_role表的CRUD操作
 */
public interface SysRoleMapper {

    /**
     * 新增角色
     * @param sysRoleEntity 角色实体（包含roleCode、roleName、status）
     * @return 影响行数（1：成功，0：失败）
     */
    int insertRole(SysRoleEntity sysRoleEntity);

    /**
     * 根据ID查询角色
     * @param id 角色ID
     * @return 角色实体（无数据则返回null）
     */
    SysRoleEntity selectRoleById(Long id);

    /**
     * 根据角色编码查询角色（用于编码唯一性校验）
     * @param roleCode 角色编码
     * @return 角色实体（无数据则返回null）
     */
    SysRoleEntity selectRoleByCode(String roleCode);

    /**
     * 条件查询角色列表
     * @param queryRoleBo 查询条件（可包含roleName、status、roleCode等）
     * @return 符合条件的角色列表（无数据则返回空列表）
     */
    List<SysRoleEntity> selectRoleList(QueryRoleBo queryRoleBo);

    /**
     * 选择性更新角色（仅更新非空字段）
     * @param sysRoleEntity 角色实体（需包含id，其他字段非空则更新）
     * @return 影响行数（1：成功，0：失败或无变更）
     */
    int updateRoleSelective(SysRoleEntity sysRoleEntity);

    /**
     * 根据ID删除角色
     * @param id 角色ID
     * @return 影响行数（1：成功，0：失败）
     */
    int deleteRoleById(Long id);
}